home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.4)
-
- '''
- The spamexpertsConfig object stores and retrieves the SpamExperts
- configuration options to and from the Windows registry.
-
- The SpamexpertsConfig class uses properties for easy of use.
- example of use:
- from se_config import spamexpertsConfig
- block_spam = spamexpertsConfig.block_spam # retrieves the block_spam value
- # from the registry
-
- spamexpertsConfig.enable_p2p = True # sets enable_p2p to true and stores
- # the value in the registry
- '''
- import os
- import sys
- import types
- import locale
- import random
- import _winreg
- import win32api
- import pythoncom
- import pywintypes
- from win32com.shell import shell, shellcon
- from Crypto.Cipher import AES
- from spamexperts.Options import options, optionsPathname
- LSP_NAME = 'SpamExpertsLSP'
- LSP_INI_FILE_NAME = '%s.ini' % (LSP_NAME,)
- SYSTEMDIR = win32api.GetSystemDirectory()
- LSP_INI_FULLPATH = os.path.join(SYSTEMDIR, LSP_INI_FILE_NAME)
-
- def create_shortcut(shortcut_path, app_path):
- shortcut = pythoncom.CoCreateInstance(shell.CLSID_ShellLink, None, pythoncom.CLSCTX_INPROC_SERVER, shell.IID_IShellLink)
- shortcut.SetWorkingDirectory(SYSTEMDIR)
- shortcut.SetPath(app_path)
- shortcut.QueryInterface(pythoncom.IID_IPersistFile).Save(shortcut_path, 0)
-
-
- class SpamexpertsConfig(object):
-
- def __init__(self):
- self._SpamexpertsConfig__block_spam = True
- self._SpamexpertsConfig__modify_subject = True
- self._SpamexpertsConfig__modify_subject_tag = 'spam'
-
- try:
- self._SpamexpertsConfig__lang = locale.getdefaultlocale()[0][:2]
- except:
- print >>sys.stderr, 'Failed to get language from system.'
- self._SpamexpertsConfig__lang = 'en'
-
- self._SpamexpertsConfig__date_header = 'Delivery-Date'
- self._SpamexpertsConfig__user_address = ''
- self._SpamexpertsConfig__auto_bugreport = False
- self._SpamexpertsConfig__enable_lsp = False
- self._SpamexpertsConfig__automatically_update = True
- self._SpamexpertsConfig__eudora_compatibility = False
- self._SpamexpertsConfig__sort_spam = (2, False)
- self._SpamexpertsConfig__sort_ham = (2, False)
- self._SpamexpertsConfig__sort_unsure = (2, False)
- self._SpamexpertsConfig__notify_sound = ''
- self._SpamexpertsConfig__user_id = None
- self._SpamexpertsConfig__split_vertically = False
- self._SpamexpertsConfig__period = 5
- self._SpamexpertsConfig__enable_periodic = False
- self._SpamexpertsConfig__balloon_notifications = True
- self._SpamexpertsConfig__show_welcome = True
- self.msginfoDB = None
-
-
- def get_mailapps(self):
- pass
-
-
- def set_mailapps(self, apps):
- if SYSTEMDIR == '':
- return 0
- else:
- options = options
- import spamexperts.Options
- content = []
- for path, ports, description in apps:
- for port in ports.split(','):
- content.append('%s,%s,%s,%s' % (path, port, options[('globals', 'proxy_redirection_port')], description))
-
-
-
- try:
- inifile = open(LSP_INI_FULLPATH, 'wb')
- except IOError:
- e = None
- print >>sys.stderr, 'Could not update LSP ini:', str(e)
-
- inifile.write('\n'.join(content))
- inifile.close()
- return len(apps)
-
- mailapps = property(get_mailapps, set_mailapps)
- key = 'QJATbEck0DSKP3xF1ZyAAzwGy7X9P0qk'
- crypt = AES.new(key)
-
- def encrypt(self, s):
- s = s + '.' * (16 - len(s) % 16)
- return repr(self.crypt.encrypt(s))
-
-
- def decrypt(self, s):
- if s is None:
- return s
-
- return self.crypt.decrypt(eval(s, { }, { })).rstrip('.')
-
-
- def get_periodic(self):
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, self._SpamexpertsConfig__subkey + '\\periodic')
- results = []
- i = 0
- while True:
-
- try:
- (value, password) = _winreg.EnumValue(key, i)[:2]
- except WindowsError:
- break
-
- (server, port, username, proto, use_ssl) = self.decrypt(value).split(',', 5)
- port = int(port)
- use_ssl = eval(use_ssl, { }, { })
- password = self.decrypt(password)
- results.append((server, port, username, password, proto, use_ssl))
- i += 1
- return results
-
-
- def set_periodic(self, data):
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, self._SpamexpertsConfig__subkey + '\\periodic')
- while True:
-
- try:
- subkey = _winreg.EnumValue(key, 0)[0]
- except WindowsError:
- break
-
- _winreg.DeleteValue(key, subkey)
- for server, port, username, password, proto, use_ssl in data:
- subkey = self.encrypt('%s,%s,%s,%s,%s' % (server, port, username, proto, use_ssl))
- _winreg.SetValueEx(key, subkey, 0, _winreg.REG_SZ, self.encrypt(password))
-
-
- periodic = property(get_periodic, set_periodic)
-
- def get_not_periodic(self):
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, self._SpamexpertsConfig__subkey + '\\not_periodic')
- results = []
- i = 0
- while True:
-
- try:
- value = _winreg.EnumValue(key, i)[0]
- except WindowsError:
- break
-
- (server, port, username, proto, use_ssl) = self.decrypt(value).split(',', 5)
- port = int(port)
- use_ssl = eval(use_ssl, { }, { })
- results.append((server, port, username, proto, use_ssl))
- i += 1
- return results
-
-
- def set_not_periodic(self, data):
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, self._SpamexpertsConfig__subkey + '\\not_periodic')
- while True:
-
- try:
- subkey = _winreg.EnumValue(key, 0)[0]
- except WindowsError:
- break
-
- _winreg.DeleteValue(key, subkey)
- for server, port, username, proto, use_ssl in data:
- subkey = self.encrypt('%s,%s,%s,%s,%s' % (server, port, username, proto, use_ssl))
- _winreg.SetValueEx(key, subkey, 0, _winreg.REG_SZ, 'True')
-
-
- not_periodic = property(get_not_periodic, set_not_periodic)
- __subkey = 'Software\\SpamExperts'
-
- def _registry_get(cls, name, default):
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, cls._SpamexpertsConfig__subkey)
-
- try:
- return _winreg.QueryValueEx(key, name)[0]
- except WindowsError:
- return default
-
-
- _registry_get = classmethod(_registry_get)
-
- def _registry_get_bool(cls, name, default):
- plain = cls._registry_get(name, default)
- if isinstance(plain, types.BooleanType):
- return plain
-
- return plain.lower() == 'true'
-
- _registry_get_bool = classmethod(_registry_get_bool)
-
- def _registry_set(cls, name, value):
- value = str(value)
- key = _winreg.CreateKey(_winreg.HKEY_CURRENT_USER, cls._SpamexpertsConfig__subkey)
- _winreg.SetValueEx(key, name, 0, _winreg.REG_SZ, value)
-
- _registry_set = classmethod(_registry_set)
-
- def get_block_spam(self):
- self._SpamexpertsConfig__block_spam = self._registry_get_bool('block_spam', self._SpamexpertsConfig__block_spam)
- return self._SpamexpertsConfig__block_spam
-
-
- def set_block_spam(self, value):
- self._registry_set('block_spam', value)
- self._SpamexpertsConfig__block_spam = value
-
- block_spam = property(get_block_spam, set_block_spam)
-
- def get_period(self):
- self._SpamexpertsConfig__period = int(self._registry_get('period', self._SpamexpertsConfig__period))
- return self._SpamexpertsConfig__period
-
-
- def set_period(self, value):
- self._registry_set('period', value)
- self._SpamexpertsConfig__period = value
-
- period = property(get_period, set_period)
-
- def get_balloon_notifications(self):
- self._SpamexpertsConfig__balloon_notifications = self._registry_get_bool('enable_balloon_notifications', self._SpamexpertsConfig__balloon_notifications)
- return self._SpamexpertsConfig__balloon_notifications
-
-
- def set_balloon_notifications(self, value):
- self._registry_set('enable_balloon_notifications', value)
- self._SpamexpertsConfig__balloon_notifications = value
-
- enable_balloon_notifications = property(get_balloon_notifications, set_balloon_notifications)
-
- def get_show_welcome(self):
- self._SpamexpertsConfig__show_welcome = self._registry_get_bool('show_welcome', self._SpamexpertsConfig__show_welcome)
- return self._SpamexpertsConfig__show_welcome
-
-
- def set_show_welcome(self, value):
- self._registry_set('show_welcome', value)
- self._SpamexpertsConfig__show_welcome = value
-
- show_welcome = property(get_show_welcome, set_show_welcome)
-
- def get_enable_periodic(self):
- self._SpamexpertsConfig__enable_periodic = self._registry_get_bool('enable_periodic', self._SpamexpertsConfig__enable_periodic)
- return self._SpamexpertsConfig__enable_periodic
-
-
- def set_enable_periodic(self, value):
- self._registry_set('enable_periodic', value)
- self._SpamexpertsConfig__enable_periodic = value
-
- enable_periodic = property(get_enable_periodic, set_enable_periodic)
-
- def get_eudora(self):
- self._SpamexpertsConfig__eudora_compatibility = self._registry_get_bool('eudora', self._SpamexpertsConfig__eudora_compatibility)
- return self._SpamexpertsConfig__eudora_compatibility
-
-
- def set_eudora(self, value):
- self._registry_set('eudora', value)
- self._SpamexpertsConfig__eudora_compatibility = value
-
- eudora_compatibility = property(get_eudora, set_eudora)
-
- def get_split_vertically(self):
- self._SpamexpertsConfig__split_vertically = self._registry_get_bool('split_vertically', self._SpamexpertsConfig__split_vertically)
- return self._SpamexpertsConfig__split_vertically
-
-
- def set_split_vertically(self, value):
- self._registry_set('split_vertically', value)
- self._SpamexpertsConfig__split_vertically = value
-
- split_vertically = property(get_split_vertically, set_split_vertically)
-
- def get_launch_on_startup(self):
- startup = shell.SHGetFolderPath(0, shellcon.CSIDL_STARTUP, 0, 0)
-
- try:
- common = shell.SHGetFolderPath(0, shellcon.CSIDL_COMMON_STARTUP, 0, 0)
- except pywintypes.com_error:
- common = None
-
- if os.path.exists(os.path.join(startup, 'SpamExperts.lnk')):
- return True
- elif common and os.path.exists(os.path.join(common, 'SpamExperts.lnk')):
- return True
-
- return False
-
-
- def set_launch_on_startup(self, value):
- if value == self.launch_on_startup:
- return None
-
- startup = shell.SHGetFolderPath(0, shellcon.CSIDL_STARTUP, 0, 0)
- common = shell.SHGetFolderPath(0, shellcon.CSIDL_COMMON_STARTUP, 0, 0)
- if value:
- if hasattr(sys, 'frozen'):
- create_shortcut(os.path.join(startup, 'SpamExperts.lnk'), sys.executable)
-
- else:
-
- try:
- os.remove(os.path.join(startup, 'SpamExperts.lnk'))
- except OSError:
- pass
-
-
- try:
- os.remove(os.path.join(common, 'SpamExperts.lnk'))
- except OSError:
- pass
-
-
- launch_on_startup = property(get_launch_on_startup, set_launch_on_startup)
-
- def get_user_id(self):
- self._SpamexpertsConfig__user_id = self._registry_get('user_id', None)
- if self._SpamexpertsConfig__user_id is None:
- self.set_user_id(str(random.random())[2:])
- self._SpamexpertsConfig__user_id = self._registry_get('user_id', None)
-
- return self._SpamexpertsConfig__user_id
-
-
- def set_user_id(self, value):
- self._registry_set('user_id', value)
- self._SpamexpertsConfig__user_id = value
-
- user_id = property(get_user_id, set_user_id)
-
- def get_user_address(self):
- self._SpamexpertsConfig__user_address = self._registry_get('user_address', self._SpamexpertsConfig__user_address)
- return self._SpamexpertsConfig__user_address
-
-
- def set_user_address(self, value):
- self._registry_set('user_address', value)
- self._SpamexpertsConfig__user_address = value
-
- user_address = property(get_user_address, set_user_address)
-
- def get_auto_report(self):
- data_dir = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0)
- fn = os.path.join(data_dir, 'auto_report')
- return os.path.exists(fn)
-
-
- def set_auto_report(self, value):
- data_dir = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0)
- fn = os.path.join(data_dir, 'auto_report')
- if value:
- file(fn, 'w').close()
- else:
-
- try:
- os.remove(fn)
- except OSError:
- pass
-
-
- auto_bugreport = property(get_auto_report, set_auto_report)
-
- def get_sort_spam(self):
- col = int(self._registry_get('sort_spam_col', self._SpamexpertsConfig__sort_spam[0]))
- col_dir = self._registry_get_bool('sort_spam_col_dir', self._SpamexpertsConfig__sort_spam[1])
- self._SpamexpertsConfig__sort_spam = (col, col_dir)
- return self._SpamexpertsConfig__sort_spam
-
-
- def set_sort_spam(self, value):
- (col, col_dir) = value
- self._registry_set('sort_spam_col', col)
- self._registry_set('sort_spam_col_dir', col_dir)
- self._SpamexpertsConfig__sort_spam = (col, col_dir)
-
- sort_spam = property(get_sort_spam, set_sort_spam)
-
- def get_sort_ham(self):
- col = int(self._registry_get('sort_ham_col', self._SpamexpertsConfig__sort_ham[0]))
- col_dir = self._registry_get_bool('sort_ham_col_dir', self._SpamexpertsConfig__sort_ham[1])
- self._SpamexpertsConfig__sort_ham = (col, col_dir)
- return self._SpamexpertsConfig__sort_ham
-
-
- def set_sort_ham(self, value):
- (col, col_dir) = value
- self._registry_set('sort_ham_col', col)
- self._registry_set('sort_ham_col_dir', col_dir)
- self._SpamexpertsConfig__sort_ham = (col, col_dir)
-
- sort_ham = property(get_sort_ham, set_sort_ham)
-
- def get_sort_unsure(self):
- col = int(self._registry_get('sort_unsure_col', self._SpamexpertsConfig__sort_unsure[0]))
- col_dir = self._registry_get_bool('sort_unsure_col_dir', self._SpamexpertsConfig__sort_unsure[1])
- self._SpamexpertsConfig__sort_unsure = (col, col_dir)
- return self._SpamexpertsConfig__sort_unsure
-
-
- def set_sort_unsure(self, value):
- (col, col_dir) = value
- self._registry_set('sort_unsure_col', col)
- self._registry_set('sort_unsure_col_dir', col_dir)
- self._SpamexpertsConfig__sort_unsure = (col, col_dir)
-
- sort_unsure = property(get_sort_unsure, set_sort_unsure)
-
- def get_modify_subject(self):
- return options[('Headers', 'header_spam_string')] in options[('Headers', 'notate_subject')]
-
-
- def set_modify_subject(self, value):
- existing = set(options[('Headers', 'notate_subject')])
- if value:
- existing.add(options[('Headers', 'header_spam_string')])
- else:
-
- try:
- existing.remove(options[('Headers', 'header_spam_string')])
- except KeyError:
- pass
-
- options[('Headers', 'notate_subject')] = tuple(existing)
- options.update_file(optionsPathname)
-
- modify_subject = property(get_modify_subject, set_modify_subject)
-
- def get_modify_subject_tag(self):
- return options[('Headers', 'header_spam_string')]
-
-
- def set_modify_subject_tag(self, value):
- options[('Headers', 'header_spam_string')] = value
- options.update_file(optionsPathname)
-
- modify_subject_tag = property(get_modify_subject_tag, set_modify_subject_tag)
-
- def get_lang(self):
- self._SpamexpertsConfig__lang = self._registry_get('lang', self._SpamexpertsConfig__lang)
- return self._SpamexpertsConfig__lang
-
-
- def set_lang(self, value):
- self._registry_set('lang', value)
- self._SpamexpertsConfig__lang = value
-
- lang = property(get_lang, set_lang)
-
- def get_date_header(self):
- self._SpamexpertsConfig__date_header = self._registry_get('date_header', self._SpamexpertsConfig__date_header)
- return self._SpamexpertsConfig__date_header
-
-
- def set_date_header(self, value):
- self._registry_set('date_header', value)
- self._SpamexpertsConfig__date_header = value
-
- date_header = property(get_date_header, set_date_header)
-
- def get_enable_lsp(self):
- self._SpamexpertsConfig__enable_lsp = self._registry_get_bool('enable_lsp', self._SpamexpertsConfig__enable_lsp)
- return self._SpamexpertsConfig__enable_lsp
-
-
- def set_enable_lsp(self, value):
- self._registry_set('enable_lsp', value)
- self._SpamexpertsConfig__enable_lsp = value
-
- enable_lsp = property(get_enable_lsp, set_enable_lsp)
-
- def get_notify_sound(self):
- self._SpamexpertsConfig__notify_sound = self._registry_get('notify_sound', self._SpamexpertsConfig__notify_sound)
- return self._SpamexpertsConfig__notify_sound
-
-
- def set_notify_sound(self, value):
- self._registry_set('notify_sound', value)
- self._SpamexpertsConfig__notify_sound = value
-
- notify_sound = property(get_notify_sound, set_notify_sound)
-
- def get_automatically_update(self):
- self._SpamexpertsConfig__automatically_update = self._registry_get_bool('automatically_update', self._SpamexpertsConfig__automatically_update)
- return self._SpamexpertsConfig__automatically_update
-
-
- def set_automatically_update(self, value):
- self._registry_set('automatically_update', value)
- self._SpamexpertsConfig__automatically_update = value
-
- automatically_update = property(get_automatically_update, set_automatically_update)
-
- spamexpertsConfig = SpamexpertsConfig()
-